題目:
(6 級) Find the odd int
給予一組整數的陣列,找到出現次數為奇數的數字。
範例:
[20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5] => 5
[1,1,2,-2,5,2,4,4,-1,-2,5] => -1
[20,1,1,2,2,3,3,5,5,4,20,4,5] => 5
[10] => 10
[1,1,1,1,1,1,10,1,1,1,1] => 10
思考方式:
Ruby 解法:
def find_it(seq)
# 把每個陣列中的數字拿出來
seq.each do |n|
# 如果該數字在陣列中的出現次數為奇數
# 回傳該數字
return n if seq.count(n).odd?
end
end
JavaScipt 解法:
function findOdd(A) {
// 先做變數 result 準備存找到的結果
let result;
// 計算次數設定為 1 表示數字本身也要算 1 個
let count = 1;
// 把陣列的數字依照大小排序
arr = A.sort();
for (let i = 0; i < arr.length; i++) {
// 跑迴圈比對當下的數字是否與下一個數字相同
if (arr[i] === arr[i+1]) {
// 相同的話計算次數加 1
count++;
} else {
// 若不同則檢查目前計算次數是否為奇數
if (count % 2 != 0) {
// 若為奇數把該數字存入變數 result
result = arr[i];
// 並且終止迴圈
break;
}
// 不是奇數就把計算次數 reset 再繼續跑迴圈做比對
count = 1;
}
}
// 最後回傳找到的結果
return result;
}